using Community.CsharpSqlite.Entity;

namespace Community.CsharpSqlite
{
    public partial class Sqlite3
    {
        /*
    ** 2001 September 15
    **
    ** The author disclaims copyright to this source code.  In place of
    ** a legal notice, here is a blessing:
    **
    **    May you do good and not evil.
    **    May you find forgiveness for yourself and forgive others.
    **    May you share freely, never taking more than you give.
    **
    *************************************************************************
    ** Header file for the Virtual DataBase Engine (VDBE)
    **
    ** This header defines the interface to the virtual database engine
    ** or VDBE.  The VDBE implements an abstract machine that runs a
    ** simple program to access and modify the underlying database.
    *************************************************************************
    **  Included in SQLite3 port to C#-SQLite;  2008 Noah B Hart
    **  C#-SQLite is an independent reimplementation of the SQLite software library
    **
    **  SQLITE_SOURCE_ID: 2010-03-09 19:31:43 4ae453ea7be69018d8c16eb8dabe05617397dc4d
    **
    **  $Header: Community.CsharpSqlite/src/Vdbe_h.cs,v 6604176a7dbe 2010/03/12 23:35:36 Noah $
    *************************************************************************
    */
        //#if !_SQLITE_VDBE_H_
        //#define _SQLITE_VDBE_H_
        //#include <stdio.h>

        /*
    ** A single VDBE is an opaque structure named "Vdbe".  Only routines
    ** in the source file sqliteVdbe.c are allowed to see the insides
    ** of this structure.
    */
        //typedef struct Vdbe Vdbe;

        /*
    ** The names of the following types declared in vdbeInt.h are required
    ** for the VdbeOp definition.
    */
        //typedef struct VdbeFunc VdbeFunc;
        //typedef struct Mem Mem;
        //typedef struct SubProgram SubProgram;


        //typedef struct VdbeOp VdbeOp;


        //typedef struct VdbeOpList VdbeOpList;

    


        /*
    ** The makefile scans the vdbe.c source file and creates the "opcodes.h"
    ** header file that defines a number for each opcode used by the VDBE.
    */
        //#include "opcodes.h"

        /*
    ** Prototypes for the VDBE interface.  See comments on the implementation
    ** for a description of what each of these routines does.
    */
        /*
    ** Prototypes for the VDBE interface.  See comments on the implementation
    ** for a description of what each of these routines does.
    */
        //Vdbe *VdbeAux.VdbeCreate(sqlite3*);
        //int VdbeAux.VdbeAddOp0(Vdbe*,int);
        //int VdbeAux.VdbeAddOp1(Vdbe*,int,int);
        //int VdbeAux.VdbeAddOp2(Vdbe*,int,int,int);
        //int VdbeAux.VdbeAddOp3(Vdbe*,int,int,int,int);
        //int VdbeAux.VdbeAddOp4(Vdbe*,int,int,int,int,const char *zP4,int);
        //int VdbeAux.VdbeAddOp4Int(Vdbe*,int,int,int,int,int);
        //int VdbeAux.VdbeAddOpList(Vdbe*, int nOp, VdbeOpList const *aOp);
        //void VdbeAux.VdbeChangeP1(Vdbe*, int addr, int P1);
        //void VdbeAux.VdbeChangeP2(Vdbe*, int addr, int P2);
        //void VdbeAux.VdbeChangeP3(Vdbe*, int addr, int P3);
        //void VdbeAux.VdbeChangeP5(Vdbe*, byte P5);
        //void VdbeAux.VdbeJumpHere(Vdbe*, int addr);
        //void sqlite3VdbeChangeToNoop(Vdbe*, int addr, int N);
        //void VdbeAux.VdbeChangeP4(Vdbe*, int addr, const char *zP4, int N);
        //void VdbeAux.VdbeUsesBtree(Vdbe*, int);
        //VdbeOp *sqlite3VdbeGetOp(Vdbe*, int);
        //int VdbeAux.VdbeMakeLabel(Vdbe*);
        //void VdbeAux.VdbeRunOnlyOnce(Vdbe*);
        //void VdbeAux.VdbeDelete(Vdbe*);
        //void VdbeAux.VdbeMakeReady(Vdbe*,int,int,int,int,int,int);
        //int VdbeAux.VdbeFinalize(Vdbe*);
        //void VdbeAux.VdbeResolveLabel(Vdbe*, int);
        //int VdbeAux.VdbeCurrentAddr(Vdbe*);
#if SQLITE_DEBUG
        //int VdbeAux.VdbeAssertMayAbort(Vdbe *, int);
        //void VdbeAux.VdbeTrace(Vdbe*,FILE*);
#else
    static int VdbeAux.VdbeAssertMayAbort( Vdbe v, int i ) { return 1; }
#endif
        //void VdbeAux.VdbeResetStepResult(Vdbe*);
        //int VdbeAux.VdbeReset(Vdbe*);
        //void VdbeAux.VdbeSetNumCols(Vdbe*,int);
        //int VdbeAux.VdbeSetColName(Vdbe*, int, int, const char *, void(*)(void*));
        //void VdbeAux.VdbeCountChanges(Vdbe*);
        //sqlite3 *VdbeAux.VdbeDb(Vdbe*);
        //void VdbeAux.VdbeSetSql(Vdbe*, const char *z, int n, int);
        //void VdbeAux.VdbeSwap(Vdbe*,Vdbe*);
        //VdbeOp *VdbeAux.VdbeTakeOpArray(Vdbe*, int*, int*);
        //void VdbeAux.VdbeProgramDelete(sqlite3 *, SubProgram *, int);
        //sqlite3_value *VdbeAux.VdbeGetValue(Vdbe*, int, byte);
        //void VdbeAux.VdbeSetVarmask(Vdbe*, int);
#if !SQLITE_OMIT_TRACE
        //char *sqlite3VdbeExpandSql(Vdbe*, const char*);
#else
    static string sqlite3VdbeExpandSql(Vdbe P, string S) {return null;}
#endif
        //UnpackedRecord *VdbeAux.VdbeRecordUnpack(KeyInfo*,int,const void*,char*,int);
        //void VdbeAux.VdbeDeleteUnpackedRecord(UnpackedRecord*);
        //int VdbeAux.VdbeRecordCompare(int,const void*,UnpackedRecord*);


#if !NDEBUG
    //void sqlite3VdbeComment(Vdbe*, const char*, ...);
    static void VdbeComment( Vdbe v, string zFormat, params object[] ap ) { sqlite3VdbeComment( v, zFormat, ap ); }//# define VdbeComment(X)  sqlite3VdbeComment X
    //void sqlite3VdbeNoopComment(Vdbe*, const char*, ...);
    static void VdbeNoopComment( Vdbe v, string zFormat, params object[] ap ) { sqlite3VdbeNoopComment( v, zFormat, ap ); }//# define VdbeNoopComment(X)  sqlite3VdbeNoopComment X
#else
//# define VdbeComment(X)
        private static void VdbeComment(Vdbe v, string zFormat, params object[] ap)
        {
        }

//# define VdbeNoopComment(X)
        private static void VdbeNoopComment(Vdbe v, string zFormat, params object[] ap)
        {
        }
#endif
    }
}